package net.yla.smartbus.core.util.date;

import java.time.Instant;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.ZoneId;
import java.util.Date;

/**
 * @Author : 默苍离
 * @Create_Date : 2021/03/02/15:59
 * @Pack_name : net.yla.smartbus.module.oc.cut.utils : DateMaxAndMin
 * *****************************************************
 * 注释: 获取某一天的最大值和最小值
 */

public class DateMaxAndMin {


    /**
     * 获取最大值
     *
     * @param date
     * @return
     */
    public static Date getMintDay(Date date) {

        /**
         *
         *  ofInstant 方法有俩个参数，第一个是 Instant类型的，表示传递给创建localdatetime的瞬间。
         *              可以获取到某天的的日期和时间并返回 LocalDateTime类型
         *
         *   第二个参数是ZoneId类型，代表用于创建偏移量的时区 ，表示区域id
         *
         */
        LocalDateTime localDateTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(date.getTime()), ZoneId.systemDefault());
        // 通过LocalDateTime的 with方法设置某天的最小值和最大值！！
        LocalDateTime minDateTime = localDateTime.with(LocalTime.MIN);
        // 格式化日期
        Date fromDate = Date.from(minDateTime.atZone(ZoneId.systemDefault()).toInstant());
        return fromDate;

    }


    /**
     * 获取最小值
     *
     * @param date
     * @return
     */
    public static Date getMaxDay(Date date) {

        LocalDateTime localDateTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(date.getTime()), ZoneId.systemDefault());
        LocalDateTime maxDateTime = localDateTime.with(LocalTime.MAX);
        return Date.from(maxDateTime.atZone(ZoneId.systemDefault()).toInstant());

    }


}
